<?php

namespace App\Models\Business;

use App\Models\Config as ConfigModel;
use App\Models\Region as RegionModel;
use Illuminate\Database\Eloquent\Model;

// 引入软删除
use  Illuminate\Database\Eloquent\SoftDeletes;


/**
 * 用户数据模型
 */
class Business extends Model
{
    // 使用软删除
    use SoftDeletes;
    // 设置当前模型对应的完整数据表名称
    protected $table = 'business';

    protected $dateFormat = 'U';

    // 定义创建时间的字段
    const CREATED_AT = 'createtime';

    const UPDATED_AT = null;

    const DELETED_AT = 'deletetime';

    //允许批量赋值
    protected $guarded = [];

    // 追加字段  在当前用户模型里面追加自定义的字段
    protected $appends = [
        'avatar_cdn', // 头像
        'region_text',  //地区
        'gender_text',
        'mobile_text',
        'province_text',
        'city_text',
        'district_text'
    ];

    /*
        开头要求：get
        avatar_cdn写在骆峰式的命名 AvatarCdn
        结尾要求是Attribute
        获取器方法名称： get + 自定义字段 + Attribute
    */
    public function getAvatarCdnAttribute()
    {
        // 获取fastAdmin的地址
        $url = ConfigModel::where('name', 'url')->value('value');


        // 上面查询的fastAdmin地址可能是线上的，如果请在该项目.env环境配置文件新增一个配置项FastAdmin的本地开发地址
        $url = env('SITE_URL', $url);

        // 拼接接口
        $url = $url . '/base/business/avatar';

        $res = httpRequest($url, ['busid' => $this->id]);

        return $res;
    }

    // 格式化省市地区
    public function getRegionTextAttribute()
    {
        // 获取省市区的地区码
        $province = $this->attributes['province'] ?? '';
        $city = $this->attributes['city'] ?? '';
        $district = $this->attributes['district'] ?? '';
        
        // 根据地区码查询相应的名称
        $provinceName = RegionModel::where('code',$province)->value('name');
        $cityName = RegionModel::where('code',$city)->value('name');
        $districtName = RegionModel::where('code',$district)->value('name');

        // 用来拼接返回的值
        $regionText = '';

        // 省
        if($provinceName)
        {
            $regionText = $provinceName;
        }

        // 市
        if($cityName)
        {
            $regionText .= $cityName;
        }

        // 区
        if($districtName)
        {
            $regionText .= $districtName;
        }

        return $regionText;
    }

    // 来源
    public function source()
    {
        return  $this->belongsTo('App\Models\Business\Source', 'sourceid', 'id');
    }

    // 性别
    public function getGenderTextAttribute()
    {
        $GenderList = [0 => '保密', 1 => '男', 2 => '女'];

        $gender = $this->attributes['gender'];

        return $GenderList[$gender];
    }

    // 手机号获取器
    public function getMobileTextAttribute()
    {
        $mobile = $this->attributes['mobile'];

        return substr_replace($mobile,'****',3,4);
    }

    // 省的名称
    public function getProvinceTextAttribute()
    {
        // 获取地区码
        $province = $this->attributes['province'] ?? '';

        // 根据地区码查询相应的名称
        $provinceName = RegionModel::where('code',$province)->value('name');

        if(!$provinceName)
        {
            return '';
        }

        return $provinceName;
    }

    // 市的名称
    public function getCityTextAttribute()
    {
        // 获取地区码
        $city = $this->attributes['city'] ?? '';

        // 根据地区码查询相应的名称
        $cityName = RegionModel::where('code',$city)->value('name');

        if(!$cityName)
        {
            return '';
        }

        return $cityName;
    }

    // 区的名称
    public function getDistrictTextAttribute()
    {
        // 获取地区码
        $district = $this->attributes['district'] ?? '';

        // 根据地区码查询相应的名称
        $districtName = RegionModel::where('code',$district)->value('name');

        if(!$districtName)
        {
            return '';
        }

        return $districtName;
    }
}
